package com.copa.gamestore.module.user.application;

import com.copa.gamestore.common.response.ResponseVo;
import com.copa.gamestore.module.user.domain.UserAccount;
import com.copa.gamestore.module.user.domain.dto.UserDto;
import com.copa.gamestore.module.user.domain.User;

import java.math.BigDecimal;
import java.util.List;

public interface UserApplicationService {

    /**
     * 根据id来查该用户拥有的角色名
     * @param userId
     * @return
     */
    List<String> roleNameByUserId(Long userId);

    User findByUsername(String username);

    ResponseVo<User> register(UserDto userDto);

    ResponseVo<String> put(UserDto userDto);

    User userInfo();

    ResponseVo<UserAccount> account();

    void takeAccount(BigDecimal money, UserAccount account);

    UserAccount accountByUserId(Long userId);

    ResponseVo<String> resetPassword(String username);

    ResponseVo<String> recharge(String username, BigDecimal money);

    ResponseVo<User> get();

    ResponseVo<User> getUser(Long id);
}
